#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
扩展版 Agent 运行脚本
集成数据库和知识库功能
"""

import sys
import os

# 添加当前目录到 Python 路径
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

try:
    # 修正模块名（Python 文件名中的连字符会被转换为下划线）
    import importlib.util
    
    # 动态导入 agent demo
    spec = importlib.util.spec_from_file_location(
        "script_agent_02_agent_demo", 
        os.path.join(os.path.dirname(__file__), "script_agent_02_agent_demo_cursor.py")
    )
    agent_module = importlib.util.module_from_spec(spec)
    spec.loader.exec_module(agent_module)
    AgentDemo = agent_module.AgentDemo
    
    from agent_extensions import create_extension_tools
    
except ImportError as e:
    print(f"❌ 导入错误: {e}")
    print("请确保所有文件都在同一目录下")
    sys.exit(1)


def main():
    """主函数 - 运行扩展版 Agent"""
    print("=" * 60)
    print("🚀 千问 Agent 扩展版 - 支持数据库和知识库")
    print("=" * 60)
    
    try:
        # 初始化基础 agent
        agent = AgentDemo()
        
        # 添加扩展工具
        extension_tools = create_extension_tools()
        for tool in extension_tools:
            agent.add_tool(tool)
        
        print("✅ 扩展版 Agent 初始化成功!")
        print("\n💡 支持的功能:")
        print("   📊 数学计算: 如 '计算 2+3*4'")
        print("   🌤️  天气查询: 如 '北京天气'")
        print("   💾 数据库操作:")
        print("      - 保存记录: user123|今天学习了Python|学习")
        print("      - 查询记录: user123")
        print("   📚 知识库操作:")
        print("      - 添加知识: Python|Python是一种编程语言")
        print("      - 搜索知识: Python")
        print("   💬 普通对话: 任何其他问题")
        print("\n输入 'quit' 或 'exit' 退出")
        print("-" * 60)
        
        # 演示一些功能
        print("\n🎯 功能演示:")
        demo_commands = [
            "添加知识: LangChain|LangChain是一个用于构建LLM应用的框架",
            "保存记录: demo_user|第一次使用扩展版Agent|测试",
            "搜索知识: LangChain",
            "查询记录: demo_user"
        ]
        
        for cmd in demo_commands:
            print(f"\n🤖 演示命令: {cmd}")
            response = agent.chat(cmd)
            print(f"📝 响应: {response}")
        
        print("\n" + "=" * 60)
        print("现在你可以开始对话了!")
        print("-" * 60)
        
        while True:
            try:
                user_input = input("\n👤 你: ").strip()
                
                if user_input.lower() in ['quit', 'exit', '退出']:
                    print("👋 再见!")
                    break
                
                if not user_input:
                    continue
                
                print("\n🤖 Agent:", end=" ")
                response = agent.chat(user_input)
                print(response)
                print("-" * 60)
                
            except KeyboardInterrupt:
                print("\n👋 再见!")
                break
            except Exception as e:
                print(f"\n❌ 错误: {e}")
                continue
                
    except Exception as e:
        print(f"❌ 初始化失败: {e}")
        print("\n📝 检查事项:")
        print("   1. 确认已安装所有依赖: pip install -r requirements.txt")
        print("   2. 确认已设置 DASHSCOPE_API_KEY 环境变量")
        print("   3. 确认网络连接正常")


if __name__ == "__main__":
    main()
